Google hacking
W Google można znaleźć naprawdę ciekawe informacje. Dużo jest też zaindeksowanych stron z błędami wygenerowanymi przez języki skryptowe. Ten wpis będzie poświęcony bezpieczeństwu stron www. Ponad przedstawię przykład wykorzystania takiej informacji o błędzie oraz jak jej zapobiec.
W jakimś czasopiśmie (nie pamiętam już nazwy), czytałem o tym jak wykorzystać informacje z Google do znajdowania starych wersji darmowych skryptów, w celu przejęcia kontroli nad nimi. Autor opisywał krok po kroku co robi, czego szuka i jak to wykorzystać.
Po ostatnich wydarzeniach w TVN w programie "Teraz My", gdzie było "hackowanie na ekranie" w zmorzyły się próby ataków na serwisy internetowe (oczywiście te większe). Bezpieczeństwem stron www zaczęto się coraz bardziej interesować i przykładać do tego coraz większą uwagę.
W ostatnim czasie, pisałem część mojego licencjatu na temat bezpieczeństwa stron internetowych (stąd między innymi zastój na blogu). Poświęciłem chwilę uwagi błędom PHP, które są generowane gdy programista błędnie waliduje dane. Rzecz niby prosta, ale...
Korzystając z prawie nieograniczonych zasobów Google, zacząłem przeszukiwać strony www, zawierające jakieś komunikaty o błędach, nigdy nie wiadomo na co można się natknąć.
Po wpisaniu do Google: Warrning: fatal error pokazał trochę wyników, ale nie było niczego godnego uwagi. Potem kombinowałem z błędami dla poszczególnych funkcji mysql i postgres. Tutaj wyników było już więcej. Znalazłem jedną stronę na której pojawił się błąd:
Warning: pg_result(): supplied argument is not a valid PostgreSQL result resource in /xxxxxxxxxxx/inc/config.inc.php on line 79
Jak widać, w katalogu /inc znajduje się plik konfiguracyjny, mogą nawet być inne. Odwiedziłem ten katalog. Zgodnie z przewidywaniami były tam inne pliki konfiguracyjne.
Szczególnie moją uwagę zwrócił plik mosConfig.php, jak się okazało był to skrypt do zarządzania plikami na serwerze! Można było wgrywać pliki, zmieniać chmod. Jednym słowem, tak jakbym był pełnoprawnym użytkownikiem na serwerze.
Oczywiście nie muszę już pisać, że wszedłem w posiadanie takich danych, jak: loginy i hasła do bazy danych, struktura bazy danych, lista użytkowników itp. Poniżej screeny:
Jak się potem okazało, po odpowiednim spreparowaniu adresu URL otrzymałem taki sam błąd, więc bez pomocy Google mogłem osiągnąć to samo.
Jak można było uniknąć takiej sytuacji?
- Odpowiednie prawa dostępu do katalogów, aby nieupoważnione osoby weszły w posiadanie poufnych informacji.
- Walidować przychodzące dane. W tym przypadku wystarczyło, że wprowadzi się jakąś większą liczbę i skrypt się wykładał.
- ten konkretny przypadek korzystał z regułek mod_rewrite. Regułki też można było w lepszy sposób napisać – na przykład ustawić jakieś limity (szczególnie dla danych liczbowych).
- Najlepszym rozwiązaniem mogłoby być zapisywanie informacji o błędach w oddzielnych plikach, tak aby na samej stronie nie były wyświetlane.
Jak Wy - czytelnicy mojego bloga - zabezpieczacie swoje serwisy? Jak widać takim atakującym może być każda osoba, która ma podstawowe wiadomości o programowaniu.
ps. Luka w serwisie została już poprawiona.
Komentarze 12
takimi metodami da sie sporo darmowych linkow zdobyc, hehe;)
natomiast co do zabezpieczen, to:
-zawsze staram sie ustawic error_reporting na 0
-w glownym katalogu trzymam tylko index.php, ktory w zaleznosci od jakiejs wartosci (najczesciej przetworzonej z pomoca mod_rewrite), po sprawdzeniu poprawnosci tej wartosci, includuje odpowiedni plik z katalogu /inc, zabezpieczonego odpowiednio htaccess-em czyli "Deny from all".
warto też korzystać z łatek i aktualizacji systemów CMS-tuaj opisałeś zhakowane mambo-chyba ulubiony system hacerów-ale jak dobrze poczytać to można je tez zabezpieczyć...ważnym jest również zeby kontrolować lub wogóle nieprzepuszczać plików uploadowanych...
Od dłuższego czasu tworzę, a także prowadzę strony internetowe szkoły. Jestem nauczycielem informatyki, osobą która raczej z zamiłowania tworzy stronę umieszczając ją na darmowym serwerze, gdyż jak wiadomo szkoły są biedne. Uważam, że obecna strona (tu nie podam adresu, aby nie kusić losu) jest całkiem niezła, a ja gdyby czasem ktoś się na nią wkradł miałabym kłopoty. Ostatnio w naszym mieście nastolatek zablokował stronę internetową Domu Kultury. Nie chciałabym aby w swoich poczynaniach poszedł dalej, nawet jeśli nie on, bo mu to uniemożliwią, to ktoś inny. Potem zdarzają się przypadki, że nauczyciele mają na zdjęciu dorysowane wąsy. Jednak do rzeczy, chciałabym ustrzec moją stronę przed tego typu wtargnięciami. Napomknę jedynie, że jest napisana w języku html, a do przesyłu plików na stronę wykorzystuję program WSFTP, gdzie wystarczy wpisać małe hasło, aby się na nią dostać. Uważam, że to żadne zabezpieczenie, takie hasła przecież można łatwo złamać. Proszę o poradę jak chronić jej zawartość, a także dostęp.
najlepiej nie uzywac darmowych cmsow, chyba ze sa naprawde sprawdzone jak wordpress, czy darmowe fora.
edit: fora jak punbb, invision board (nie wiem czy nadal darmowe)
Marzena: jesli korzystasz jedynie z plikow html, i nie umieszczasz na serwerze skryptow wykonywanych po stronie serwera, czyli np. PHP, czy ASP, to nie musisz sie obawiac "wlamu" na strone.
natomiast, jak rozumiem, masz obiekcje co do hasla dostepu do FTP. coz, najlepiej skontaktowac sie z adminem serwera, ewentualnie skorzystac z odpowiedniej funkcji, ktora gdzies powinna byc;) i zmienic haslo na cos w stylu "oe7ifh1r9f49f" - tego nie da sie tak latwo zlamac...
Odnośnie "Jak można było uniknąć takiej sytuacji?" to się nie zgodzę - to raczej półśrodki... Przede wszystkim trzeba nie zostawiać niezabezpieczonych narzędzi tego typu. Jasne, gdyby nie ten komunikat błędu to może byś tam nie trafił, ale z drugiej strony nawet gdyby tego błędu nie było to i tak można by odgadnąć nazwę pliku i zrobić "wjazd"...
O google hacking dowiecie się też z tąd: http://www.ghack.jcom.pl
O google hacking dowiecie się też z tąd: http://www.ghack.jcom.pl
Najlepszym zabezpieczeniem wydaje się być wypisywanie zunifikowanych błędów jeśli coś pójdzie nie tak jak powinno. Wtedy niezależnie od komunikatu błędu użytkownik zobaczy tylko coś w stylu "wystąpił błąd", albo jeszcze lepiej, gdy po prostu zostanie przekierowany na główną stronę serwisu i nawet nie będzie świadom, że wystąpił błąd.
Warto też includować w php "ukrywanie" błędów i ostrzeżeń:
error_reporting(0);
ini_set('display_errors', 0);
Wyszukiwarki mogą czasami zindeksować czasami to co nie chcielibyśmy, aby ktoś miał do tego dostęp. Niestety bardzo często winę w tym przypadku ponosi człowiek. Dowiedz się co google może wiedzieć o Tobie, o Twojej
firmie itp. i naucz się przed tym zabezpieczyć.
O google hacking więcej przeczytaj na www.googlehacking.tk